package com.winning.jsyd.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.winning.jsyd.entity.business.*;
import com.winning.jsyd.entity.describe.Record;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @Author: z_dd@winning.com.cn
 * @Desc: TODO
 * @Date: 2019-03-18 13:24
 **/
@Mapper
@Repository
public interface UDDao {
    /**
     * 居民基本信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<HaPersonInfoEntity> saveHaPersonInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 高血压报告卡信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<DmHighbloodReport> saveHighbloodReport(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 糖尿病报告卡信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<DmDiabetesReport> saveDiabetesReport(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 高血压访视信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<DmHighbloodVisit> saveHighbloodVisit(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 糖尿病访视信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<DmDiabetesVisit> saveDiabetesVisit(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 门诊收费信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssRcptMaster> saveOcmsRcptInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 门诊收费明细信息
     *
     * @param yljgdm
     * @param sflsh
     * @return
     */
    List<MssRcptBill> selectMssRcptBill(@Param("YLJGDM") String yljgdm, @Param("SFLSH") String sflsh);

    /**
     * 门诊就诊病历信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssOutDiagnosis> saveMssOutInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 门诊处方主记录和明细记录
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssPrescMaster> saveMssPrescInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 检查主记录和明细记录
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssExamMaster> saveEmrExamInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 检验主记录
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssTestMaster> saveEmrTestInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 检验明细记录
     *
     * @param yljgdm
     * @param jylsh
     * @return
     */
    List<MssTestDetail> selectMssTestDetail(@Param("YLJGDM") String yljgdm, @Param("JYLSH") String jylsh);

    /**
     * 住院病人费用明细信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssPatsBillDetail> saveInpPatsBillDetail(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 病人结算主记录和明细信息
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssPatsSettleMaster> saveInpPatsSettle(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 医嘱记录
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssPatsSettleMaster> saveMssInOrder(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 住院处方主记录和明细记录。
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<HMssPrescMaster> saveEmrPrescInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 入院记录
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssResidentAdmin> saveMssAdminInfo(Page page, @Param("tablename") String tablename, @Param("jssj") String date);


    /**
     * 手术申请
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssOperationApply> saveMssOperationApply(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    /**
     * 手术记录
     *
     * @param page
     * @param tablename
     * @param date
     * @return
     */
    IPage<MssOperationRecord> saveMssOperationRecord(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    IPage<MssDischarge> saveMssDischarge(Page page, @Param("tablename") String tablename, @Param("jssj") String date);

    int updateTimestamp(@Param("tablename") String tablename, @Param("date") String date);

    //    记录错误日志
    int insertErrorLog(@Param("taskID") String taskID, @Param("tableName") String tableName, @Param("errorMsgs") List<String> errorMsgs);

    //    统计上传结果
    int statisticalResults(@Param("record")Record record);


//    IPage<GwdaEntity> selectGwda(Page<GwdaEntity> page, @Param("tablename") String tablename, @Param("jssj") String date);
//
//    IPage<GwsfEntity> selectGwsf(Page<GwsfEntity> page, @Param("tablename") String tablename, @Param("jssj") String date);
//
//    IPage<GwzaEntity> selectGwza(Page<GwzaEntity> page, @Param("tablename") String tablename, @Param("jssj") String date);


}
